package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.GradeBean;
import com.project.bean.RoleBean;

import java.util.List;

/**
 * 角色业务接口
 */
public interface IRoleService {
    /**
     * 根据角色id数组，查询权限集合，并且去除重复权限
     *
     * @param roleIdArray
     * @return 权限集合拼接的字符串
     */
    public String findByRoleIdArray(Integer[] roleIdArray);

    /**
     * 根据用户id，查询他所拥有的角色集合
     *
     * @param userId 用户id
     * @return 角色集合
     */
    public List<RoleBean> findRoleListByUserId(Integer userId);

    /**
     * 分页查询角色信息
     *
     * @param pageNO 页码
     * @return 角色分页对象
     */
    public IPage<RoleBean> cutByItem(Integer pageNO);

    /**
     * 查询所有角色信息
     *
     * @return 角色集合
     */
    public List<RoleBean> findAllRole();

    /**
     * 1.添加新角色；
     * 2.添加该角色拥有的权限
     *
     * @param role         新角色对象
     * @param gradeIdArray 该角色拥有的权限数组
     */
    public void addRole(RoleBean role, Integer[] gradeIdArray);

    /**
     * 1.根据角色id，删除用户拥有的该角色信息（中间表）
     * 2.根据角色id，删除该角色拥有的权限信息（中间表）
     * 3.根据角色id，删除角色
     *
     * @param roleId 角色id
     */
    public void delRole(Integer roleId);

    /**
     * 根据角色id，查询角色信息，同时查询该角色拥有的权限集合
     *
     * @param roleId 角色id
     * @return 角色对象
     */
    public RoleBean findByRoleId(Integer roleId);

    /**
     * 根据角色id，修改角色权限
     *
     * @param roleId          角色id
     * @param newGradeIdArray 新的权限id数组
     */
    public void updateGrade(Integer roleId, Integer[] newGradeIdArray);

    /**
     * 根据用户id，删除该用户拥有的权限（中间表）
     *
     * @param userId 用户id
     */
    public void delByUser(Integer userId);
}
